/*
*   Grupo 2:		Ana Elisa Siena			7126563
*                       Larissa Zimmermann		7126879
* 
*   Jogo em Java - AngryBirds
*   SCC - 604 - Programação Orientada a Objetos
*   Prof. Fernando V. Paulovich
*   Engenharia de Computação 010 - USP - São Carlos
*   Segundo Semestre de 2011 
*	
*/

package angrybirds.fases;

import angrybirds.main.Angrybirds;
import angrybirds.personagens.Passaro;
import org.newdawn.slick.Animation;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.Sound;
import org.newdawn.slick.SpriteSheet;
import org.newdawn.slick.geom.Circle;
import org.newdawn.slick.geom.Vector2f;
import org.newdawn.slick.state.StateBasedGame;

/*******************************************************************************
 *	Nome da classe:     Fase 5
 *	O que faz:          Inicializa e roda a fase 4          		
 *******************************************************************************/

public class Fase5 extends FaseGeral {

    private int stateID = -1;
    private Circle passaro = new Circle(400, 540, 36);

    public Fase5(int FASE5) {
        this.stateID = FASE5;
    }

    @Override
    public int getID() {
        return this.stateID;
    }
    
    /*********************************************************************************
     *	Neste método, inicializamos a fase 5
     *********************************************************************************/
    
    @Override
    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
        
        super.init(gc, sbg);
        
        this.setsBGame(sbg);
        
        //Inicializamos o número de porcos e pássaros da fase
        this.setNum_porcos(15);        
        this.setNum_passaros(20);        

        //Inicializamos a posição do pássaro
        this.setPosicaoPassaro(new Vector2f(360,500));

        //Animação do Passaro e inicialização de sua vida
        SpriteSheet Passaro_branco = new SpriteSheet("imagensJogo/PassarosBranco.png", 80, 80);
        Animation passaro_branco = new Animation(true);        
        Anima_Passaro = new Passaro("Branco", passaro_branco, Passaro_branco, 
                this.getPosicaoPassaro(), this.getPosicaoPassaro(), this.passaro, 0);
        Anima_Passaro.renderizar();
        Anima_Passaro.setVida_passaro(1);
        
        //Inicialização do som do pássaro
        passaroAparecendo = new Sound("sons/PassaroBranco.wav");
    }
    
    /*********************************************************************************
     *	Neste método, renderizamos a fase 5
     *********************************************************************************/

    @Override
    public void render(GameContainer gc, StateBasedGame sbg, Graphics grphcs) throws SlickException {

        this.setRapidez_porco(200);

        super.render(gc, sbg, grphcs);
        
        if (this.getNum_passaros() != 0) {
            Anima_Passaro.render(grphcs);
        }
        
        grphcs.drawString("Fase: 5" , 400, 10);
    }

     /*********************************************************************************
     *	Neste método, fazemos a atualização da fase 5
     *********************************************************************************/
    
    @Override
    public void update(GameContainer gc, StateBasedGame sb, int delta) throws SlickException {

        super.update(gc, sb, delta);
                
        //A pessoa ganhou o jogo (ou seja, fez o maior número de pontos, matando todos os porcos)
        if (this.getPlayer().getScore() >= this.getNum_porcos() * 100 || this.getNum_porcos() == 0) {
            
            //passamos para tela "ganhou"
            sb.enterState(Angrybirds.GANHOU);
            this.getMusicaFundo().stop();
            this.setPONTOS(this.getPONTOS() + this.getPlayer().getScore());
            
            //e inicializamos a fase 5 (caso o jogador volte a querer jogá-la)
            init(gc, this.getsBGame());
            System.out.println("Potuação5:"+ this.getPONTOS());
        }
        
        //A pessoa perdeu (ou seja, ficou sem vidas)
        if (this.getNum_passaros() == 0 && this.getNum_porcos() != 0) {

            //passamos para tela "perdeu"
            sb.enterState(Angrybirds.PERDEU);

            //e inicializamos a fase 5 (caso o jogador volte a querer jogá-la)
            init(gc, this.getsBGame());
        }
    }
}
